package com.example.a_java.task;

import com.example.a_java.service.OverdueService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 还款相关定时任务
 */
@Component
@Slf4j
public class RepaymentScheduledTask {

    @Autowired
    private OverdueService overdueService;

    /**
     * 每天凌晨1点检查并生成逾期记录
     */
    @Scheduled(cron = "0 0 1 * * ?")
    public void checkAndGenerateOverdueRecords() {
        log.info("开始执行定时任务：检查并生成逾期记录");
        try {
            int count = overdueService.checkAndGenerateOverdueRecords();
            log.info("定时任务执行完成：生成了 {} 条逾期记录", count);
        } catch (Exception e) {
            log.error("定时任务执行异常：检查并生成逾期记录", e);
        }
    }

    /**
     * 每天凌晨2点更新罚息金额
     */
    @Scheduled(cron = "0 0 2 * * ?")
    public void updatePenaltyAmount() {
        log.info("开始执行定时任务：更新罚息金额");
        try {
            int count = overdueService.updatePenaltyAmount();
            log.info("定时任务执行完成：更新了 {} 条逾期记录的罚息", count);
        } catch (Exception e) {
            log.error("定时任务执行异常：更新罚息金额", e);
        }
    }

    /**
     * 每周一早上10点发送逾期提醒
     */
    @Scheduled(cron = "0 0 10 ? * MON")
    public void sendOverdueReminders() {
        log.info("开始执行定时任务：发送逾期提醒");
        try {
            // 这里实现批量发送提醒的逻辑，或者调用相关服务方法
            log.info("定时任务执行完成：已发送逾期提醒");
        } catch (Exception e) {
            log.error("定时任务执行异常：发送逾期提醒", e);
        }
    }
} 
